---
title: 'Linear'
sidebarTitle: 'Linear'
description: 'Access the Linear API in 2 minutes 💨'
---

<Tabs>
  <Tab title="🚀 Quickstart">
    <Steps>
      <Step title="Create an integration">
        In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Linear_. Nango doesn't provide a test OAuth app for Linear yet. You’ll need to set up your own by following these [instructions](#🧑%E2%80%8D💻-oauth-app-setup). After that, make sure to add the OAuth client ID, secret, and scopes in the integration settings in Nango.
      </Step>
      <Step title="Authorize Linear">
        Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then log in to Linear. Later, you'll let your users do the same directly from your app.
      </Step>
      <Step title="Call the Linear API">
        Let's make your first request to the Linear API (fetch a list of issues). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
        <Tabs> 
            <Tab title="cURL">

                ```bash
                curl "https://api.nango.dev/proxy/graphql" \
                  -H "Authorization: Bearer <NANGO-SECRET-KEY>" \
                  -H "Provider-Config-Key: <INTEGRATION-ID>" \
                  -H "Connection-Id: <CONNECTION-ID>" \
                  -H "Content-Type: application/json" \
                  -d '{
                        "query": "query { issues(first: 10) { nodes { id title identifier } } }"
                      }'
                ```

            </Tab>

            <Tab title="Node">

            Install Nango's backend SDK with `npm i @nangohq/node`. Then run:

            ```typescript
            import { Nango } from '@nangohq/node';

            const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

            const res = await nango.post({
              endpoint: '/graphql',
              data: {
                "query": "query { issues(first: 10) { nodes { id title identifier } } }"
              },
              providerConfigKey: '<INTEGRATION-ID>',
              connectionId: '<CONNECTION-ID>'
            });

            console.log(JSON.stringify(res.data, 2, null));
            ```
            </Tab>


        </Tabs>

        Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).

      </Step>
    </Steps>

    ✅ You’re connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.

    <Tip>
    Next step: [Embed the auth flow](/getting-started/quickstart/embed-in-your-app) in your app to let your users connect their Linear accounts.
    </Tip>
  </Tab>
  <Tab title="🧑‍💻 OAuth app setup">
   <Steps>
  <Step title="Create a Linear account">
    If you don't already have one, sign up for a [Linear account](https://linear.app/signup).
  </Step>
  <Step title="Create an OAuth2 application">
    1. Log in to your [Linear account](https://linear.app/login).
    2. Under your specific workspace, navigate to **Settings** > **API** > **OAuth applications**.
    3. Click the **+** icon.
    <Note> It is highly recommended to create a dedicated workspace for managing your OAuth application, as each admin user will have access. </Note>
  </Step>
  <Step title="Configure your OAuth application">
    1. Fill in all the required information. For **Callback URLs**, add `https://api.nango.dev/oauth/callback` and toggle the **Public** switch to allow installation in other workspaces. Newly created OAuth applications will have the **Refresh Tokens** option enabled by default. If it is not enabled, you can turn it on to allow new connections to include refresh token functionality.
    2. Click **Create** to save your application.
  </Step>
  <Step title="Obtain OAuth credentials">
    1. After creating your application, you'll be provided with **Client ID** and **Client Secret**. Make a copy of these credentials as they will be needed when configuring your integration in Nango.
  </Step>

  <Step title="Next">
    Follow the [_Quickstart_](/getting-started/quickstart).
  </Step>
</Steps>

  </Tab>
  <Tab title="🔗 Useful links">
| Topic | Links | 
| - | - | 
| General | [Website](https://linear.app/) |
| | [Create a Linear account](https://linear.app/signup) |
| | [Linear Contact Help](https://linear.app/contact/support) |
| Developer | [API documentation](https://linear.app/developers) |
| | [GraphQL API reference](https://linear.app/developers/graphql) |
| | [Authentication documentation](https://linear.app/developers/oauth-2-0-authentication) |
| | [OAuth application setup](https://linear.app/developers/oauth-2-0-authentication#create-an-oauth2-application) |
| | [OAuth scopes](https://linear.app/developers/oauth-2-0-authentication#redirect-user-access-requests-to-linear) |
| | [API rate limits](https://linear.app/developers/rate-limiting) |
| | [Webhooks](https://linear.app/developers/webhooks) |

    <Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/linear.mdx)</Note>
  </Tab>
  <Tab title="🚨 API gotchas">
  -  Linear is moving to short-lived OAuth2 access tokens with refresh tokens starting `Oct 1, 2025`. Existing OAuth2 apps must be updated to support refresh tokens, you can enable this by toggling the **Refresh Token** option in the OAuth settings. Connections created before enabling this will still have the 10-year expiry; only new connections after enabling will include refresh tokens in the response.
  -  Linear uses a GraphQL API rather than a REST API. This means all API requests are made to a single endpoint (`https://api.linear.app/graphql`).
  -  Linear has different rate limits depending on the authentication method used. For full details, refer to the [Linear rate limit documentation](https://linear.app/developers/rate-limiting#api-request-limits).
  -  OAuth tokens do not expire in the short term, but they are valid for up to 10 years. After that, users will need to reauthenticate.
  -  When creating an OAuth application, it's recommended to create a dedicated workspace for managing the application.
  -  Linear's GraphQL API requires that you specify exactly which fields you want to retrieve in your queries.
  -  Linear supports webhooks for real-time updates, which can be more [efficient](https://linear.app/developers/rate-limiting#avoid-polling) than polling for changes.
  -  The `admin` scope should only be requested if absolutely necessary, as it provides full access to admin-level endpoints.
    <Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/linear.mdx)</Note>
  </Tab>
</Tabs>

<Info>
    Questions? Join us in the [Slack community](https://nango.dev/slack).
</Info>